// API兼容层
// 为了保持与现有代码的兼容性，提供与原有API文件相同的接口
// 但内部使用统一的HTTP客户端和环境配置

import { menuApi, roleApi, userApi, permissionApi, operationLogApi, authApi, personalApi, uploadApi } from './services'

// ==================== 菜单API兼容层 ====================
export const menuApiCompatibility = {
  // 获取所有菜单
  getAllMenus() {
    return menuApi.getAllMenus()
  },

  // 获取菜单树
  getMenuTree() {
    return menuApi.getMenuTree()
  },

  // 根据ID获取菜单
  getMenuById(id) {
    return menuApi.getMenuById(id)
  },

  // 创建菜单
  createMenu(data) {
    return menuApi.createMenu(data)
  },

  // 更新菜单
  updateMenu(id, data) {
    return menuApi.updateMenu(id, data)
  },

  // 删除菜单
  deleteMenu(id) {
    return menuApi.deleteMenu(id)
  },

  // 根据角色ID获取菜单
  getMenusByRole(roleId) {
    return menuApi.getMenusByRole(roleId)
  },

  // 为角色分配菜单
  assignMenusToRole(roleId, menuIds) {
    return menuApi.assignMenusToRole(roleId, menuIds)
  }
}

// ==================== 角色API兼容层 ====================
export const roleApiCompatibility = {
  // 获取所有角色
  getAllRoles() {
    return roleApi.getAllRoles()
  },

  // 根据 ID 获取角色
  getRoleById(id) {
    return roleApi.getRoleById(id)
  },

  // 创建角色
  createRole(data) {
    return roleApi.createRole(data)
  },

  // 更新角色
  updateRole(id, data) {
    return roleApi.updateRole(id, data)
  },

  // 删除角色
  deleteRole(id) {
    return roleApi.deleteRole(id)
  },

  // 分配权限
  assignPermissions(roleId, permissionIds) {
    return roleApi.assignPermissions(roleId, permissionIds)
  }
}

// ==================== 用户API兼容层 ====================
export const userApiCompatibility = {
  // 列表
  getUsers(params = { page: 1, pageSize: 10 }) {
    return userApi.getUsers(params)
  },

  // 搜索用户
  searchUsers(keyword) {
    return userApi.searchUsers(keyword)
  },

  // 新增
  addUser(data) {
    return userApi.addUser(data)
  },

  // 编辑
  updateUser(id, data) {
    return userApi.updateUser(id, data)
  },

  // 删除
  deleteUser(id) {
    return userApi.deleteUser(id)
  },

  // 获取用户角色
  getUserRoles(userId) {
    return userApi.getUserRoles(userId)
  },

  // 为用户分配角色
  assignRoles(userId, roleIds) {
    return userApi.assignRoles(userId, roleIds)
  },

  // 修改密码
  changePassword(data) {
    return userApi.changePassword(data)
  },

  // 更新个人资料
  updateProfile(data) {
    return userApi.updateProfile(data)
  },

  // 上传头像
  uploadAvatar(formData) {
    return userApi.uploadAvatar(formData)
  }
}

// ==================== 权限API兼容层 ====================
export const permissionApiCompatibility = {
  // 获取所有权限
  getAllPermissions() {
    return permissionApi.getAllPermissions()
  },

  // 根据ID获取权限
  getPermissionById(id) {
    return permissionApi.getPermissionById(id)
  },

  // 创建权限
  createPermission(data) {
    return permissionApi.createPermission(data)
  },

  // 更新权限
  updatePermission(id, data) {
    return permissionApi.updatePermission(id, data)
  },

  // 删除权限
  deletePermission(id) {
    return permissionApi.deletePermission(id)
  },

  // 获取权限树
  getPermissionTree() {
    return permissionApi.getPermissionTree()
  },

  // 为角色分配权限
  assignToRole(roleId, permissionIds, menuIds = []) {
    return permissionApi.assignToRole(roleId, permissionIds)
  },

  // 根据角色获取权限
  getPermissionsByRole(roleId) {
    return permissionApi.getPermissionsByRole(roleId)
  },

  // 清空角色权限
  clearRolePermissions(roleId) {
    return permissionApi.clearRolePermissions(roleId)
  },

  // 初始化权限数据
  initializePermissions() {
    return permissionApi.initializePermissions()
  },

  // 测试API连接
  testConnection() {
    return permissionApi.testConnection()
  }
}

// ==================== 操作日志API兼容层 ====================
export const operationLogApiCompatibility = {
  // 获取所有日志
  getAllLogs() {
    return operationLogApi.getList()
  },

  // 获取日志列表（支持分页和筛选）
  getList(params = {}) {
    return operationLogApi.getList(params)
  },

  // 根据ID获取日志
  getLogById(id) {
    return operationLogApi.getById(id)
  },

  // 添加getById别名方法，确保兼容性
  getById(id) {
    return operationLogApi.getById(id)
  },

  // 创建日志
  createLog(data) {
    return operationLogApi.create(data)
  },

  // 更新日志
  updateLog(id, data) {
    return operationLogApi.update(id, data)
  },

  // 删除日志
  deleteLog(id) {
    return operationLogApi.delete(id)
  },

  // 获取用户的日志
  getLogsByUser(userId, params = {}) {
    return operationLogApi.getLogsByUser(userId, params)
  },

  // 获取模块的日志
  getLogsByModule(module, params = {}) {
    return operationLogApi.getLogsByModule(module, params)
  },

  // 导出日志
  exportLogs(params = {}) {
    return operationLogApi.exportLogs(params)
  }
}

// ==================== 认证API兼容层 ====================
export const authApiCompatibility = {
  // 登录
  login(data) {
    return authApi.login(data)
  },

  // 注册
  register(data) {
    return authApi.register(data)
  },

  // 登出
  logout() {
    return authApi.logout()
  },

  // 刷新token
  refresh() {
    return authApi.refresh()
  },

  // 获取用户信息
  getInfo() {
    return authApi.getInfo()
  },

  // 忘记密码
  forgotPassword(data) {
    return authApi.forgotPassword(data)
  },

  // 重置密码
  resetPassword(data) {
    return authApi.resetPassword(data)
  }
}

// ==================== 个人信息API兼容层 ====================
export const personalApiCompatibility = {
  // 获取个人资料
  getProfile(userId) {
    return personalApi.getProfile(userId)
  },

  // 更新个人资料
  updateProfile(userId, data) {
    return personalApi.updateProfile(userId, data)
  },

  // 修改密码
  changePassword(userId, data) {
    return personalApi.changePassword(userId, data)
  }
}

// ==================== 文件上传API兼容层 ====================
export const uploadApiCompatibility = {
  // 上传文件
  uploadFile(formData) {
    return uploadApi.uploadFile(formData)
  },

  // 上传图片
  uploadImage(formData) {
    return uploadApi.uploadImage(formData)
  },

  // 删除文件
  deleteFile(fileId) {
    return uploadApi.deleteFile(fileId)
  },

  // 上传头像
  avatar(file) {
    return uploadApi.avatar(file)
  }
}



// ==================== 默认导出兼容层 ====================
// 为了保持与现有代码的完全兼容性，提供默认导出

// 菜单API默认导出
export default menuApiCompatibility

// 同时导出所有兼容层
export {
  menuApiCompatibility as menuApi,
  roleApiCompatibility as roleApi,
  userApiCompatibility as userApi,
  permissionApiCompatibility as permissionApi,
  operationLogApiCompatibility as operationLogApi,
  authApiCompatibility as authApi,
  personalApiCompatibility as personalApi,
  uploadApiCompatibility as uploadApi
} 